package com.Reporte_Estados;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ExecutionException;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.BarChart;
import org.achartengine.chart.LineChart;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.model.SeriesSelection;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


import com.ClasesGraficas.*;
import com.Generales.R;
import com.Generales.login;
import com.JSON.JSONParser_Final;
import com.Reporte_Evolutivo.RE_1_Tipo_Eventos;
import com.Reporte_Venta.Venta;
import com.Reporte_Venta.Venta_Promotor;
import com.Reporte_Venta.VentasGenerales;
import com.Tablas.Tabla_Evento;
import com.BD.*;
import android.app.ActionBar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class Reporte_Estados extends Activity {
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */

	private static String urlEstadosAnuales = "http://200.16.7.112:3000/reports_management/report/estadosAnuales";
	private static String urlEstadosMensuales = "http://200.16.7.112:3000/reports_management/report/estadosMensuales";
	private static String urlEstadosTrimestrales = "http://200.16.7.112:3000/reports_management/report/estadosTrimestrales";
	private JSONArray auxJson = null;
	
	
	private String idPromotor;
    private String nombreUser;
    private int idperfil;
	
	//### Graficar ###/
	GraphicalView mChartView = null;
	LinearLayout layoutGrafica = null;
	String tituloGrafica = "";
	List<String> titulosX = null;
	List<double[]> Aestados = null;
	List<Estado> regEstado = null;
	boolean anual = false;
	String [] title=null;


	
	//flags
	public int flagGenerarReporte = 0;
	public int flagTiempo = 0; // 1=mes && 2=trimenstre && 3=anno
	public int flagLima = 0;
	public int flagProvincia = 0;
	
	private Button pickDateInicio;
    private int anhoInicio;
    private int mesInicio;
    private int diaInicio;
    
    private Button pickDateFin;
    private int anhoFin;
    private int mesFin;
    private int diaFin;

    private TextView fechaInicio;
    private TextView fechaFin;
    
    static final int DATE_DIALOG_Inicial = 0;
    static final int DATE_DIALOG_Final = 1;
    
    private TextView mDateDisplayInicio,mDateDisplayFin;
	
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.estados);
		
		nombreUser = this.getIntent().getExtras().getString("nombreUser");
		idPromotor = this.getIntent().getExtras().getString("idPromotor");
		idperfil = this.getIntent().getExtras().getInt("idperfil");
		
		/*** ACTION BAR ***/
		Resources res = getResources();
		Drawable myImage = res.getDrawable(R.drawable.background2);		
		ActionBar actionBar = this.getActionBar();
		actionBar.setBackgroundDrawable(myImage);
		actionBar.setDisplayUseLogoEnabled(true);
		actionBar.setDisplayShowTitleEnabled(true);
		actionBar.setTitle(nombreUser);
		
		mDateDisplayInicio = (TextView) findViewById(R.id.fechaInicio);
		mDateDisplayFin = (TextView) findViewById(R.id.fechaFin);
		
		pickDateInicio = (Button) findViewById(R.id.ButtonInicio);

		pickDateInicio.setOnClickListener(new View.OnClickListener() {
		            public void onClick(View v) {
		                showDialog(DATE_DIALOG_Inicial);
		            }
		        });
		        
		final Calendar c = Calendar.getInstance();
		anhoInicio = c.get(Calendar.YEAR);
		mesInicio = c.get(Calendar.MONTH);
		diaInicio = c.get(Calendar.DAY_OF_MONTH);
		
		pickDateFin = (Button) findViewById(R.id.ButtonFin);

		pickDateFin.setOnClickListener(new View.OnClickListener() {
		            public void onClick(View v) {
		                showDialog(DATE_DIALOG_Final);
		            }
		        });
		        
		anhoFin = c.get(Calendar.YEAR);
		mesFin = c.get(Calendar.MONTH);
		diaFin = c.get(Calendar.DAY_OF_MONTH);	
		
		fechaInicio = (TextView) findViewById(R.id.fechaInicio);
		fechaInicio.setText("Fecha Inicio: " + diaInicio + "/"+ (mesInicio +1) + "/"+ anhoInicio);
		fechaFin = (TextView) findViewById(R.id.fechaFin);
		fechaFin.setText("Fecha Fin: " + diaFin + "/"+ (mesFin +1) + "/"+ anhoFin);
		
		
		graficaInicial(null);
	}
	
	
	
	
	public void GenerarReporte(View view){
		
		int numeroInicial = anhoInicio*10000+mesInicio*100+diaInicio;
		int numeroFinal = anhoFin*10000+mesFin*100+diaFin;
		
		title= new String[6];
		title[0]="rechazado";
		title[1]="pendiente";
		title[2]="aprobado";
		title[3]="ejecutado";
		title[4]="preaprobado";
		title[5]="eliminado";
		
		if (( ( flagProvincia == 0 && flagLima==0) || flagTiempo == 0)== false) // if 1
		{
		
			if(numeroFinal>=numeroInicial) //if 2
			{
				
				int mesinicialnumero = (mesInicio) % 4 ;
				int mesfinalnumero = (mesFin) % 4 ;
				//Toast.makeText(this, mesinicialnumero+"", Toast.LENGTH_LONG).show();
				//Toast.makeText(this, mesfinalnumero+"", Toast.LENGTH_LONG).show();
								
						int flagTipoReporte = 3; //ANOS
						String ubicacion = "";
						if (flagLima == 1 && flagProvincia != 1)
						ubicacion = "lima";
						if (flagLima != 1 && flagProvincia == 1)
						ubicacion = "provincias";
					
						Estados EstadosPeriodo = new Estados();    
					
						if (flagTiempo == 3) //ANUAL
							{
								String url = urlEstadosAnuales;
							if (ubicacion.equals(""))
								url += "Ambos/";
							else
								url += "/";
							url += anhoInicio + "/" + anhoFin;
							if (ubicacion.equals(""))
								url +=  ".json";
							else
								url += "/" + ubicacion + ".json";
							auxJson = returnJnEstados(url);
							
							if (auxJson != null)
							{
								if (auxJson.length() != 0)
								{
									leerJsonA();
									if (anhoFin == anhoInicio)
										this.tituloGrafica = "Reporte Estados  " + anhoFin;
									else
										this.tituloGrafica = "Reporte Estados  " + anhoInicio + "-" + anhoFin;
									
									
									
									EstadosPeriodo.setTituloChart(tituloGrafica);
									EstadosPeriodo.setTitulosX(titulosX);
									EstadosPeriodo.ejecutar(Aestados,title,3);
									ocultaPanel();
									
									this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoEstados);
									this.mChartView = ChartFactory.getBarChartView(this,EstadosPeriodo.getDataset(), 
											EstadosPeriodo.getmRenderer(),Type.DEFAULT);
									layoutGrafica.removeAllViews();
								    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
									               LayoutParams.FILL_PARENT));
									
									Toast.makeText(this, "Se genera el reporte de Estados por Año", Toast.LENGTH_SHORT).show();
									
								}
								else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
							}else Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
						 }// fin anual 
						else //else noAnual 
						{
						 if (flagTiempo == 1) //Mensual
						{
							flagTipoReporte = 1; //MES
							String url = urlEstadosMensuales;
							if (ubicacion.equals(""))
								url += "Ambos/";
							else
								url += "/";
							url += anhoInicio + "-" + (mesInicio +1) + "-" + diaInicio + "/";
							url += anhoFin + "-" + (mesFin + 1) + "-" + diaFin;
							if (ubicacion.equals(""))
								url +=  ".json";
							else
								url += "/" + ubicacion + ".json";
							auxJson = returnJnEstados(url);
							
							if (auxJson != null)
							{
								if (auxJson.length() != 0)
								{
									leerJsonM();
									if (anhoFin == anhoInicio && mesInicio == mesFin)
										this.tituloGrafica = "Reporte de Estados  " + (mesInicio + 1) + "-" + anhoInicio;
									else
										this.tituloGrafica = "Reporte de Estados  " + (mesInicio + 1) + "/" + anhoInicio + " - " + (mesFin + 1) + "/" + anhoFin;
										
									EstadosPeriodo.setTituloChart(tituloGrafica);
									EstadosPeriodo.setTitulosX(titulosX);
									EstadosPeriodo.ejecutar(Aestados, title,1);
									
									ocultaPanel();
									
									this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoEstados);
									this.mChartView = ChartFactory.getBarChartView(this,EstadosPeriodo.getDataset(), 
											EstadosPeriodo.getmRenderer(),Type.DEFAULT);
									layoutGrafica.removeAllViews();
								    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
									               LayoutParams.FILL_PARENT));
									
									Toast.makeText(this, "Se genera el reporte de Estados por Mes", Toast.LENGTH_SHORT).show();
								}else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();								
							}
							else Toast.makeText(this, "Problemas con la conexion", Toast.LENGTH_LONG).show();
						}// fin mensual
						
						 else //else noMensual 
						 { 
						if (flagTiempo == 2) //Trimestral
						{
							if (anhoInicio!=anhoFin) Toast.makeText(this, "Se debe seleccionar periodos del mismo año para la opción de periodos Trimestrales", Toast.LENGTH_LONG).show();
							else {
							flagTipoReporte = 2; //Trimestres
							String url = urlEstadosTrimestrales;
							if (ubicacion.equals(""))
								url += "Ambos/";
							else
								url += "/";
							url += anhoInicio + "-" + (mesInicio +1) + "-" + diaInicio + "/";
							url += anhoFin + "-" + (mesFin + 1) + "-" + diaFin;
							if (ubicacion.equals(""))
								url +=  ".json";
							else
								url += "/" + ubicacion + ".json";
							auxJson = returnJnEstados(url);
							if (auxJson != null)
							{
								if (auxJson.length() != 0)
								{
									
									leerJsonT();
									if (anhoFin == anhoInicio && mesInicio == mesFin)
										this.tituloGrafica = "Reporte de Estados  " + (mesInicio + 1) + "-" + anhoInicio;
									else
										this.tituloGrafica = "Reporte de Estados  " + (mesInicio + 1) + "/" + anhoInicio + " - " + (mesFin + 1) + "/" + anhoFin;
										
									EstadosPeriodo.setTituloChart(tituloGrafica);
									EstadosPeriodo.setTitulosX(titulosX);
									EstadosPeriodo.ejecutar(Aestados,title,2 );
									ocultaPanel();
									
									this.layoutGrafica = (LinearLayout)findViewById(R.id.idpanelgraficoEstados);
									this.mChartView = ChartFactory.getBarChartView(this,EstadosPeriodo.getDataset(), 
											EstadosPeriodo.getmRenderer(),Type.DEFAULT);
									layoutGrafica.removeAllViews();
								    layoutGrafica.addView(mChartView, new LayoutParams(LayoutParams.FILL_PARENT,
									               LayoutParams.FILL_PARENT));
									
									Toast.makeText(this, "Se genera el reporte de Estados por Trimestre", Toast.LENGTH_SHORT).show();										
								}
						
							     else Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
							}else Toast.makeText(this, "Problemas en la conexion", Toast.LENGTH_LONG).show();
						
							}
							}   // fin Trimestral        
					
						 }// fin else NoMensual
						} // fin else NoAnual
						
				
			    }//if 2
				else
					Toast.makeText(this, "La Fecha Final no puede ser menor a la Fecha Inicial", Toast.LENGTH_LONG).show();
		}//if 1
			else
				Toast.makeText(this, "Debe seleccionar el periodo y la ubicacion", Toast.LENGTH_LONG).show();
	}
				
	
	
	private JSONArray returnJnEstados(String url) {
		JSONArray array = null;
		try {
			array = (new JSONParser_Final().execute(url)).get(); //SE OBTIENE LOS OBJ DEL JSON
		} catch (Exception e) {
			Toast.makeText(this, "No hay datos para mostrar", Toast.LENGTH_LONG).show();
		}
		return array;
	}
	
	private void ocultaPanel()
	{
		LinearLayout ll7 = (LinearLayout)findViewById(R.id.LayaoutEstados);
		ll7.setVisibility(View.GONE);
	}
	
	private void muestraPanel()
	{
		LinearLayout ll7 = (LinearLayout)findViewById(R.id.LayaoutEstados);
		
		if (ll7.getVisibility() == View.VISIBLE)
			ll7.setVisibility(View.GONE);
		else if(ll7.getVisibility() == View.GONE)
			ll7.setVisibility(View.VISIBLE);
	}
	
	
	private void leerJsonA() 
	{		
		regEstado = new ArrayList<Estado>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				Estado auxEstado = new Estado();
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("cubo_evento");
		        
		        auxEstado.setAnho(jsonItem1.getInt("Anho"));
		        auxEstado.setCantidad(jsonItem1.getInt("Cantidad"));
		        auxEstado.setEstado(jsonItem1.getString("Estado"));
		        regEstado.add(auxEstado);
			}
			
			//setPromotores();
			setTitulosXA();
			setAestadosA();

		}catch (JSONException e) { e.printStackTrace();}
	}
	
	private void leerJsonM() 
	{		
		regEstado = new ArrayList<Estado>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				Estado auxEstado = new Estado();
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("cubo_evento");
		        
		        auxEstado.setMes(jsonItem1.getInt("Mes"));
		        auxEstado.setCantidad(jsonItem1.getInt("Cantidad"));
		        auxEstado.setEstado(jsonItem1.getString("Estado"));
		        auxEstado.setNomMes(jsonItem1.getString("NomMes"));
		        regEstado.add(auxEstado);
			}
			
			//setPromotores();
			setTitulosXM();
			setAestadosM();

		}catch (JSONException e) { e.printStackTrace();}
	}
	
	private void leerJsonT() 
	{		
		regEstado = new ArrayList<Estado>();

		try
		{
			for (int i = 0; i < auxJson.length(); i++)
			{
				Estado auxEstado = new Estado();
				JSONObject jsonItem = auxJson.getJSONObject(i);
		        JSONObject jsonItem1 = jsonItem.getJSONObject("cubo_evento");
		        
		        auxEstado.setTrimestre(jsonItem1.getInt("Trimestre"));
		        auxEstado.setCantidad(jsonItem1.getInt("Cantidad"));
		        auxEstado.setEstado(jsonItem1.getString("Estado"));
		        regEstado.add(auxEstado);
			}
			
			//setPromotores();
			setTitulosXT();
			setAestadosT();

		}catch (JSONException e) { e.printStackTrace();}
	}
	
	
	private void setAestadosM() 
	{
		Aestados = new ArrayList<double[]>();
		double[] auxAestados = null;
		
		for(int i=0;i< 6;i++)
		{
			
	    	auxAestados=dameCantidadesM(i);  
			Aestados.add(auxAestados);						
		}		
	}
	
	private void setAestadosA() 
	{
		Aestados = new ArrayList<double[]>();
		double[] auxAestados = null;
		
		for(int i=0;i< 6;i++)
		{
			
	    	auxAestados=dameCantidadesA(i);  
			Aestados.add(auxAestados);						
		}		
	}
	
	private void setAestadosT() 
	{
		Aestados = new ArrayList<double[]>();
		double[] auxAestados = null;
		
		for(int i=0;i< 6;i++)
		{
			
	    	auxAestados=dameCantidadesT(i);  
			Aestados.add(auxAestados);						
		}		
	}
	
	
	private int procesar (String x)
	{int aux=2012;
		
	return aux;	
	}
	
	private double[] dameCantidadesM(int est)
	{
		double[] aux = new double[this.titulosX.size()];
		for(int k=0;k<this.titulosX.size();k++) aux[k]=0;
		
		String estado = null;	
		switch (est){
		
		case 0:{ estado="rechazado";break;}
		case 1:{ estado="pendiente";break;}
		case 2:{estado="aprobado";break;}
		case 4:{estado="ejecutado";break;}
		case 3:{estado="preaprobado";break;}
		case 5:{estado="eliminado";break;}
		
		}
		
		Estado auxEstado = null;
		int MesIni=regEstado.get(0).getMes();
		
		String NomMesA=regEstado.get(0).getNomMes();
		
		int cont=0;
		
		for(int i=0;i<regEstado.size();i++)
			
		{	
			
			auxEstado = regEstado.get(i);
			String p = auxEstado.getEstado();
			
            		 
			if (!(auxEstado.getNomMes().equals(NomMesA))) {cont++;NomMesA=auxEstado.getNomMes();}
			if ((p.equals(estado))) aux[cont]=auxEstado.getCantidad();
			
			
		}
		return aux;
		
	}
	
	
	
	private double[] dameCantidadesT(int est)
	{
		double[] aux = new double[this.titulosX.size()];
		for(int k=0;k<this.titulosX.size();k++) aux[k]=0;
	
		
		String estado = null;	
		switch (est){
		
		case 0:{ estado="rechazado";break;}
		case 1:{ estado="pendiente";break;}
		case 2:{estado="aprobado";break;}
		case 4:{estado="ejecutado";break;}
		case 3:{estado="preaprobado";break;}
		case 5:{estado="eliminado";break;}
			
		
		}
		
		Estado auxEstado = null;
		int TriIni= regEstado.get(0).getTrimestre();
		
		for(int i=0;i<regEstado.size();i++)
		{
			auxEstado = regEstado.get(i);
			String p = auxEstado.getEstado();
			
			if(p.equals(estado))
			{
				aux[auxEstado.getTrimestre()-TriIni] = auxEstado.getCantidad();
			}
				
		}
		
		return aux;
	}
	
	
	private double[] dameCantidadesA(int est)
	{
		double[] aux = new double[this.titulosX.size()];
		for(int k=0;k<this.titulosX.size();k++) aux[k]=0;
		
		String estado = null;	
		switch (est){
		
		case 0:{ estado="rechazado";break;}
		case 1:{ estado="pendiente";break;}
		case 2:{estado="aprobado";break;}
		case 4:{estado="ejecutado";break;}
		case 3:{estado="preaprobado";break;}
		case 5:{estado="eliminado";break;}
		}
		
		Estado auxEstado = null;
		int AnhoI=regEstado.get(0).getAnho();
		
		for(int i=0;i<regEstado.size();i++)
		{
			auxEstado = regEstado.get(i);
			String p = auxEstado.getEstado();
			
			if(p.equals(estado))
			{
				aux[regEstado.get(i).getAnho()-AnhoI] = auxEstado.getCantidad();
				
			}
				
		}
		
		return aux;
	}
	
	
	private void setTitulosXA()
	{
		this.titulosX = new ArrayList<String>();
		
		Estado auxEstado = regEstado.get(0);
		int  anhoAnt = auxEstado.getAnho();
		titulosX.add(auxEstado.getAnho()+"");
		
		for(int i=1;i<regEstado.size();i++)
		{
			auxEstado = regEstado.get(i);
			int p = auxEstado.getAnho();
			
			if(p!=anhoAnt){
				titulosX.add(auxEstado.getAnho()+"");
				anhoAnt=p;	
			}
		}
	}
	
	
	private String sacarAnho(String s){
		char[] c= new char[2];
		s.toCharArray();
		c[0]=s.charAt(4);
		c[1]=s.charAt(5);
		
		return c.toString();
	}
	
	private String sacarMes(String s){
		char[] c= new char[3];
		s.toCharArray();
		c[0]=s.charAt(0);
		c[1]=s.charAt(1);
		c[2]=s.charAt(2);
		
		return c.toString();
		
	}
	
	private int comparar(String s1,String s2 ){
		
	String  anho1=sacarAnho(s1);
	String	anho2=sacarAnho(s2);
	String	mes1=sacarMes(s1);
	String	mes2=sacarMes(s2);
	int i1=0;
	int i2=0;
	if ( mes1.equals("ene")) i1=1;
	if (mes1.equals("feb")) i1=2;
	if (mes1.equals("mar")) i1=3;
	if (mes1.equals("abr")) i1=4;
	if (mes1.equals("may")) i1=5;
	if (mes1.equals("jun")) i1=6;
	if (mes1.equals("jul")) i1=7;
	if (mes1.equals("ago")) i1=8;
	if (mes1.equals("sep")) i1=9;
	if (mes1.equals("oct")) i1=10;
	if (mes1.equals("nov")) i1=11;
	if (mes1.equals("dic")) i1=12;
	if (mes2.equals("ene")) i2=1;
	if (mes2.equals("feb")) i2=2;
	if (mes2.equals("mar")) i2=3;
	if (mes2.equals("abr")) i2=4;
	if (mes2.equals("may")) i2=5;
	if (mes2.equals("jun")) i2=6;
	if (mes2.equals("jul")) i2=7;
	if (mes2.equals("ago")) i2=8;
	if (mes2.equals("sep")) i2=9;
	if (mes2.equals("oct")) i2=10;
	if (mes2.equals("nov")) i2=11;
	if (mes2.equals("dic")) i2=12;
	
	if ((anho2.compareTo(anho1)<0)) return 1; 
	if (anho2.compareTo(anho1)>0) return -1;
	if (anho2.compareTo(anho1)==0) return i2-i1;		
	
	return i2-i1;
	}
	
	
	
	private void ordenar(){
		String aux;
		
		for (int i = 0; i<titulosX.size()-1; i++) { 
			for (int j = i; j<titulosX.size(); j++) { 
			if( comparar(titulosX.get(i),titulosX.get(j))>0) 
			{ 
			aux=titulosX.get(i); 
			titulosX.set(i,titulosX.get(j));
			titulosX.set(j,aux);
			} 
		} 
	} 
	}
	
	
	private void setTitulosXM()
	{
		this.titulosX = new ArrayList<String>();
		
		Estado auxEstado = regEstado.get(0);
		int  mesAnt = auxEstado.getMes();
		titulosX.add(auxEstado.getNomMes());
		
		for(int i=1;i<regEstado.size();i++)
		{
			auxEstado = regEstado.get(i);
			int p = auxEstado.getMes();
			
			if(p!=mesAnt){
				titulosX.add(auxEstado.getNomMes());
				mesAnt=p;
			}
		}
		ordenar();
	}
	
	private void setTitulosXT()
	{
		this.titulosX = new ArrayList<String>();
		
		Estado auxEstado = regEstado.get(0);
		int triAnt = auxEstado.getTrimestre();
		titulosX.add(auxEstado.getTrimestre() + "/" + auxEstado.getAnho());
		
		for(int i=1;i<regEstado.size();i++)
		{
			auxEstado = regEstado.get(i);
			int p = auxEstado.getTrimestre();
			
			if(p!=triAnt){
				titulosX.add(auxEstado.getTrimestre() + "/" + auxEstado.getAnho());
				triAnt=p;
			}
		}
	}
	
	
	public void graficaInicial (View view){
		
		double[] auxDatos = {};
    	//double[] auxDatos2 = {100, 225, 120, 355, 211, 103};
    	List<double[]> datos = new ArrayList<double[]>();
    	datos.add(auxDatos);
    	//datos.add(auxDatos2);
    	
    	
    	
    	double[] auxDatos3 = {};
    	List<double[]> datosLine = new ArrayList<double[]>();
    	datosLine.add(auxDatos3);
    	
    	barra_linea grafica = new barra_linea();
    	grafica.execute(datos,datosLine);
    	
    	String [] types = {BarChart.TYPE, LineChart.TYPE};
    	
    	GraphicalView mChartview;
		LinearLayout layout = (LinearLayout) findViewById(R.id.idpanelgraficoEstados);
		mChartview = ChartFactory.getCombinedXYChartView(this, grafica.getDataSet(), grafica.getmRenderer(), types);
		layout.removeAllViews();
		layout.addView(mChartview, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
		
		
    }
	
	protected Dialog onCreateDialog(int id) {
		   switch (id) {
		   case DATE_DIALOG_Inicial:
		    DatePickerDialog dialogoInicio =new DatePickerDialog(this,
		                    mDateSetListenerInicio, anhoInicio, mesInicio, diaInicio);
		    
		    dialogoInicio.getDatePicker();
			   
		    return dialogoInicio;
		    
		   case DATE_DIALOG_Final:
			    DatePickerDialog dialogoFin =new DatePickerDialog(this,
			                    mDateSetListenerFin, anhoFin, mesFin, diaFin);
			    
			    dialogoFin.getDatePicker();
		   
		    return dialogoFin;
		   }
		   return null;
	}
	
	private DatePickerDialog.OnDateSetListener mDateSetListenerInicio = new DatePickerDialog.OnDateSetListener() {
  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  	anhoInicio = year;
  	mesInicio = monthOfYear;
  	diaInicio = dayOfMonth;
  	
  	mDateDisplayInicio.setText(new StringBuilder()
			// Month is 0 based so add 1
      .append(mesInicio + 1).append("-")
      .append(diaInicio).append("-")
      .append(anhoInicio).append(" "));
  }
	};
	
	private DatePickerDialog.OnDateSetListener mDateSetListenerFin = new DatePickerDialog.OnDateSetListener() {
  public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
  	anhoFin = year;
  	mesFin = monthOfYear;
  	diaFin = dayOfMonth;
  	
  	mDateDisplayFin.setText(new StringBuilder()
			// Month is 0 based so add 1
      .append(mesFin + 1).append("-")
      .append(diaFin).append("-")
      .append(anhoFin).append(" "));        	
  }
	};
	
	
	
	
	public void establecerColorTiempo(View view){
		
		
		Button buttonMensuales = (Button) findViewById(R.id.btnMensuales);
		Button buttonAnuales = (Button) findViewById(R.id.btnAnho);
		Button buttonTrimestrales = (Button) findViewById(R.id.btnTrimestres);
	
		if (buttonMensuales.isPressed()){
			
			anual = false;
			Drawable d1 = buttonMensuales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);
			
			
			Drawable d2 = buttonAnuales.getBackground();
            findViewById(R.id.btnAnho).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonTrimestrales.getBackground();
            findViewById(R.id.btnTrimestres).invalidateDrawable(d3);
            d3.clearColorFilter();
            
			flagTiempo=1;
			
			
		}
		if (buttonAnuales.isPressed()){
			
			anual = true;
			Drawable d1 = buttonAnuales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

			
			Drawable d2 = buttonMensuales.getBackground();
            findViewById(R.id.btnMensuales).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonTrimestrales.getBackground();
            findViewById(R.id.btnTrimestres).invalidateDrawable(d3);
            d3.clearColorFilter();
            
			flagTiempo=3;
		
		}
		if (buttonTrimestrales.isPressed()) {
			
			anual = false;
			Drawable d1 = buttonTrimestrales.getBackground();
            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
            d1.setColorFilter(filter);

			
			Drawable d2 = buttonMensuales.getBackground();
            findViewById(R.id.btnMensuales).invalidateDrawable(d2);
            d2.clearColorFilter();
			
            Drawable d3 = buttonAnuales.getBackground();
            findViewById(R.id.btnAnho).invalidateDrawable(d3);
            d3.clearColorFilter();
            
			flagTiempo=2;
			
		}
		
		
	}
	
	
	public void establecerColorUbicacion(View view){	

		Button buttonLima = (Button) findViewById(R.id.btnLima);
		Button buttonProvincia = (Button) findViewById(R.id.btnProvincia);
        
        if (buttonLima.isPressed()){
        	if (flagLima == 0) {
        		Drawable d1 = buttonLima.getBackground();
                PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
                d1.setColorFilter(filter);
    			flagLima=1;
        	}
        	else{
        		Drawable d2 = buttonProvincia.getBackground();
                findViewById(R.id.btnLima).invalidateDrawable(d2);
                d2.clearColorFilter();
                flagLima=0;
        	}
		}
        
		if (buttonProvincia.isPressed()){
			
			if(flagProvincia==0){
				Drawable d1 = buttonProvincia.getBackground();
	            PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);
	            d1.setColorFilter(filter);
				flagProvincia=1;
			}
			else{
				Drawable d2 = buttonLima.getBackground();
	            findViewById(R.id.btnProvincia).invalidateDrawable(d2);
	            d2.clearColorFilter();
	            flagProvincia=0;
			}
		}
	}


		
		public boolean onCreateOptionsMenu(Menu menu) {
		        MenuInflater inflater = getMenuInflater();
		        inflater.inflate(R.menu.menuprincipal, menu);
		        return true;
		    }
		
		@Override
		public boolean onOptionsItemSelected(MenuItem item) {
		    // Handle item selection
		    switch (item.getItemId()) {
		        case R.id.logout:
		        	Intent logo = new Intent(this,login.class);
		        	startActivity(logo);
		            return true;
		        case android.R.id.home:
		        	muestraPanel();
		            return true;
		        case R.id.menuPrincipal:
		        	Intent menu = new Intent(this,com.Generales.Menu.class);
		        		        	
		        	menu.putExtra("codigo","");
		        	menu.putExtra("nombreUser",nombreUser);
		        	menu.putExtra("idPromotor",idPromotor);
		        	menu.putExtra("idperfil", idperfil);
		        	startActivity(menu);
		            return true;
		        default:
		            return super.onOptionsItemSelected(item);
		    }
		}
		
}	
	

